NetworkServer

NetworkServer是一个管理来自多个客户端的连接的高级API类。

NetworkServer使用NetworkServerSimple实现基本的网络功能,并添加更多类似游戏的功能。

NetworkServer通过NetworkServerSimple实例处理来自远程客户端的远程连接,并且还具有本地客户端的本地连接。

NetworkServer是一个单例。它具有静态便利功能,如NetworkServer.SendToAll()NetworkServer.Spawn(),它们自动使用单例实例。

NetworkManager使用NetworkServer,但可以在没有NetworkManager的情况下使用。

网络服务器管理已生成的一组网络对象。对象由NetworkServer.Spawn()生成,它将它们添加到此集合中,并使它们在客户端上创建。生成的对象在被销毁时会自动删除,或者通过调用NetworkServer.UnSpawn()从生成的集合中删除它们 - 这不会销毁该对象。

NetworkServer使用了许多内部消息,当NetworkServer.Listen()被调用时会设置这些消息。

静态属性

属性 功能
active 检查服务器是否已启动。
connections 来自客户端的所有当前连接的列表。
dontListen 如果启用此功能,则服务器将不侦听常规网络端口上的传入连接。
handlers 向服务器注册的消息处理程序字典。
hostTopology 服务器正在使用的主机拓扑。
listenPort 服务器正在侦听的端口。
localClientActive 如果本地客户端当前处于活动状态,则为真。
localConnections 服务器上的本地连接列表。
maxDelay 在连接上发送数据包之前的最大延迟。
networkConnectionClass 创建新网络连接时使用的类。
numChannels 网络配置的通道数量。
objects 这是一个已经在服务器上产生的网络对象的字典。
serverHostId 此服务器使用的传输层hostId
useWebSockets 这使服务器侦听WebSockets连接而不是普通的传输层连接。

静态方法

方法 说明
AddExternalConnection 它接受来自另一个外部源的网络连接并将其添加到服务器。
AddPlayerForConnection AddPlayer消息处理程序收到来自玩家的请求时,服务器会调用此方法将玩家对象与连接相关联。
BecomeHost 这允许已经从服务器断开连接的客户端成为新版游戏的主机。
ClearHandlers 清除所有注册的回调处理程序。
ClearLocalObjects 这将清除服务器知道的所有网络对象。如果场景更改以正常方式删除所有对象而不以正常方式销毁它们,则可能需要这样做。
ClearSpawners 清除该服务器的所有已注册的spawn预制和生成处理函数。
Configure 这为服务器配置传输层设置。
Destroy 销毁此对象和所有客户端上的相应对象。
DestroyPlayersForConnection 这将销毁与服务器上的NetworkConnections关联的所有玩家对象。
DisconnectAll 断开所有当前连接的客户端。
FindLocalObject 这将找到具有指定网络ID的本地NetworkIdentity对象。
GetConnectionStats 获取所有连接的聚合数据包统计信息。
GetStatsIn 获取服务器的入站网络统计信息。
GetStatsOut 获取客户端的出站网络统计信息。
Listen 在给定的端口号上启动服务器。请注意,如果已创建匹配项,则将使用中继服务器而不是本地套接字来侦听。
ListenRelay 使用中继服务器启动服务器。这是使用中继服务器的手动方式,因为如果存在匹配项,常规NetworkServer.Connect()将自动使用中继服务器。
RegisterHandler 为特定的消息类型注册一个处理程序。
RemoveExternalConnection 这会删除添加了AddExternalConnection()的外部连接。
ReplacePlayerForConnection 这将替换玩家对象与不同玩家对象的连接。旧玩家对象不会被销毁。
Reset 重置NetworkServer单例。
ResetConnectionStats 重置所有连接上的数据包统计信息。
SendByChannelToAll 在指定的传输层QoS通道上向所有连接的客户端发送网络消息。
SendByChannelToReady 将网络消息发送到指定传输层QoS通道上的“就绪”所有连接的客户端。
SendBytesToPlayer 这将向特定玩家发送一个字节数组。
SendBytesToReady 这会向所有准备好的玩家发送一个字节数组。
SendToAll 将具有给定类型编号的消息结构发送给所有连接的客户端。
SendToClient 发送消息给拥有给定连接ID的客户端。
SendToClientOfPlayer 向拥有给定玩家对象实例的客户端发送消息。
SendToReady 将具有给定类型编号的消息结构发送给只有准备好的客户端。
SendUnreliableToAll 将给定的消息结构作为不可靠的消息发送给所有连接的客户端。
SendUnreliableToReady 发送给定的消息结构仅作为不可靠的消息给已准备好的客户端。
SendWriterToReady NetworkWriter对象的内容发送给准备好的玩家。
SetAllClientsNotReady 将所有连接的客户端标记为不再准备好。
SetClientNotReady 将连接的客户端设置为未准备好。
SetClientReady 设置客户端准备就绪。
SetNetworkConnectionClass 这设置创建新网络连接时使用的类。
Shutdown 这会关闭服务器并断开所有客户端的连接。
Spawn 在准备好的所有客户端上产生给定的游戏对象。
SpawnObjects 这会导致场景中的NetworkIdentity对象在服务器上生成。
SpawnWithClientAuthority 这会产生一个像NetworkServer.Spawn()这样的对象,但也会将Client Authority分配给指定的客户端。
UnregisterHandler 取消注册特定消息类型的处理程序。
UnSpawn 这需要一个已经衍生出来的对象并且不会产生它。

🔚